using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;

namespace FU.Capstones.IMS.Web.Common.InventoryServiceProxy.DataContracts
{
    [DataContract(Namespace = WebConstants.ServiceNamespace)]
    public class EmploymentType : BindingModelBase<EmploymentType>
    {
        public EmploymentType()
        {
            AddAllAttributeValidators();
        }

        private int employmentTypeID;
        [DataMember]
        [Key]
        public int EmploymentTypeID
        {
            get { return employmentTypeID; }
            set
            {
                if(!Equals(employmentTypeID,value))
                {
                    employmentTypeID = value;
                    RaisePropertyChanged(() => EmploymentTypeID);
                }
            }
        }

        private string employmentTypeCode;
        [DataMember]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Mã tuyển dụng không đưọc bỏ trống.")]
        [StringLength(10, ErrorMessage = "Mã tuyển dụng không dài quá 10 kí tự.")]
        public string EmploymentTypeCode
        {
            get { return employmentTypeCode; }
            set
            {
                if (!ReferenceEquals(employmentTypeCode, value))
                {
                    employmentTypeCode = value;
                    RaisePropertyChanged(() => EmploymentTypeCode);
                }
            }
        }

        private string employmentTypeName;
        [DataMember]
        [Required(AllowEmptyStrings = false, ErrorMessage="Loại tuyển dụng không đưọc bỏ trống.")]
        [StringLength(20, ErrorMessage="Tên loại tuyển dụng không dài quá 20 kí tự.")]
        public string EmploymentTypeName
        {
            get { return employmentTypeName; }
            set
            {
                if(!ReferenceEquals(employmentTypeName,value))
                {
                    employmentTypeName = value;
                    RaisePropertyChanged(() => EmploymentTypeName);
                }
            }
        }

        public string EmploymentTypeNameSearch
        {
            get { return employmentTypeName; }
            set
            {
                if (!ReferenceEquals(employmentTypeName, value))
                {
                    employmentTypeName = value;
                    RaisePropertyChanged(() => EmploymentTypeNameSearch);
                }
            }
        }

        private string briefDescription;
        [DataMember]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Miêu tả vắn tắt không đưọc bỏ trống.")]
        [StringLength(500, ErrorMessage = "Miêu tả vắn tắt không dài quá 500 kí tự.")]
        public string BriefDescription
        {
            get { return briefDescription; }
            set
            {
                if(!ReferenceEquals(briefDescription,value))
                {
                    briefDescription = value;
                    RaisePropertyChanged(() => BriefDescription);
                }
            }
        }

        private string fullDescription;
        [DataMember]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Miêu tả đầy đủ không đưọc bỏ trống.")]
        [StringLength(4000, ErrorMessage = "Miêu tả đầy đủ không dài quá 4000 kí tự.")]
        public string FullDescription
        {
            get { return fullDescription; }
            set
            {
                if (!ReferenceEquals(fullDescription, value))
                {
                    fullDescription = value;
                    RaisePropertyChanged(() => FullDescription);
                }
            }
        }

        private bool isDelete;
        [DataMember]
        public bool IsDelete
        {
            get { return isDelete; }
            set
            {
                if (!Equals(isDelete, value))
                {
                    isDelete = value;
                    RaisePropertyChanged(() => IsDelete);
                }
            }
        }
    }
}